#!/bin/bash
#shell script to zip up a couple of log files, as well as any cores 
#and javacores found on system.

ZIPDIR="dump"

uid=`id -u`
if [ $uid -ne 0 ]
then 
  echo Need to be root to run the copyLogs script
  exit 0
fi

datelabel=$(date +%m%d%Y%H%M%S)

#generate javacore files
echo Would you like to generate java core files. Please type yes or no.
read answer
if [[ $answer = yes || $answer = y ]]
then
 #create 2 cores for each proc
 for z in 1 2 
 do

   for i in WConsole CIMServer CommandC CIME
   do

    STOP_PID=`ps -efww | grep $i | grep -v grep | cut -c10-16`
    if [ "$STOP_PID" != "" ]
    then
        echo Sending SIGQUIT to $i
        #echo $STOP_PID
	kill -3 $STOP_PID > /dev/null 2>&1
        # wait (with timeout) 
        for j in 1 2 3 4 5 6
        do
                if ps -efww | grep $i > /dev/null 2>&1 
                then
                        sleep 1
                else
                        break
                fi
        done
    fi

   done
   sleep 5
   echo One more time
 done
 sleep 5  
fi
echo ""
#generate hardware server dump file
echo Would you like to generate a hardware server dump file. Please type yes or no.
read answer
if [[ $answer = yes || $answer = y ]]
then
    echo generating hardware server dump file
    killall -s USR1 hdwr_svr  > /dev/null 2>&1
fi

echo ""
echo Dumping the object repository

NAMESPACE=`ls /var/sniacimom/persistence/classes/root | grep ibmhsc | grep -v info`
for i in $NAMESPACE; do
   echo "dumpRep $i"
   /opt/hsc/bin/dumpRep root/$i
done


#remove any existing /$ZIPDIR/HSClogs.zip file and /tmp/sysinfo.log file
rm -f /$ZIPDIR/HSClogs* 2>/dev/null
rm -f /tmp/sysinfo.log 2>/dev/null

#make a new /tmp/sysinfo.log file
file=/tmp/sysinfo.log
echo *************SYSTEM INFORMATION************** >> $file
date +"%a %b %e %r %Z %Y" >> $file
echo >> $file
echo Disk Usage: >> $file
echo ----------- >> $file
df >> $file
echo >> $file
echo Memory and Swap Usage: >> $file
echo ---------------------- >> $file
free -b >> $file
echo >> $file
echo Top 30 Processes Using the Most Memory >> $file
echo -------------------------------------- >> $file
ps auwwwx | sort +4 -5 +9 -10 -r -n | head -30 >> $file
echo >> $file
echo Top 30 Processes Using the Most CPU Time >> $file
echo ---------------------------------------- >> $file
ps auwwwx | sort +2 -3 +9 -10 -r -n | head -30 >> $file
echo >> $file

rpm -qa > /tmp/rpm.list

#zip everything up into /tmp/HSClogs.zip.
zip -gj /$ZIPDIR/HSClogs$datelabel.zip \
   /opt/hsc/data/version \
   /var/hsc/log/aca.log* \
   /var/hsc/log/acm.log* \
   /var/hsc/log/cimserver.log* \
   /var/hsc/log/controller.log  \
   /var/hsc/log/hdwr_svr.log*  \
   /var/hsc/log/hmcdump*  \
   /var/hsc/log/iqyylog.log \
   /var/hsc/log/iqzdtrac.trm  \
   /var/hsc/log/vterms.log \
   /var/hsc/log/5250proxy.log \
   /var/hsc/log/5250proxy_trace.log \
   /tmp/bridge.WServer.log  \
   /tmp/console.WConsole.log \
   /tmp/rpm.list \
   /tmp/sysinfo.log  \
   /var/log/boot.msg \
   /var/log/messages*  \
   /var/log/XFree86* \
   /etc/jlbd.manifest 

rm -f /tmp/rpm.list

echo ""
echo Gather RMC logs

/usr/bin/rpttr /var/ct/IW/log/mc/IBM.ServiceRM/trace > /$ZIPDIR/RMC_ServiceRM.trace 2>&1
/usr/bin/rpttr /var/ct/IW/log/mc/IBM.ServiceRM/trace.0 > /$ZIPDIR/RMC_ServiceRM.trace.0 2>&1
/usr/bin/rpttr /var/ct/IW/log/mc/IBM.DMSRM/trace > /$ZIPDIR/RMC_DMSRM.trace 2>&1
/usr/bin/rpttr /var/ct/IW/log/mc/IBM.DMSRM/trace.0 > /$ZIPDIR/RMC_DMSRM.trace.0 2>&1
/usr/bin/rpttr /var/ct/IW/log/mc/trace > /$ZIPDIR/RMC.trace 2>&1
zip -gD /$ZIPDIR/HSClogs$datelabel.zip /$ZIPDIR/RMC*
rm -f /$ZIPDIR/RMC*

echo ""
echo Gather ccfw info
/opt/ccfw/hmcdebuginfo > /dev/null 2>&1
zip -gD /$ZIPDIR/HSClogs$datelabel.zip  /tmp/hmcdebuginfo* /opt/ccfw/ccfw.out
rm /tmp/hmcdebuginfo*

echo ""
echo Get the profiles data

tar -cvf profiles.tar /var/hsc/profiles/*  >/dev/null 2>&1
zip -g /$ZIPDIR/HSClogs$datelabel.zip profiles.tar
rm profiles.tar

echo ""
echo Look for javacores
for mntpoint in `/bin/df -l -m | /usr/bin/tail +2 | /bin/awk '{print $6}'`
do
   #echo $mntpoint
   for n in `/usr/bin/find $mntpoint  -name "javacore*" -type f`
   do
      zip -g /$ZIPDIR/HSClogs$datelabel.zip $n
   done
done

#get other core files
LOC=`pwd`
for i in / /tmp  /opt/ccfw /usr/websm/codebase /opt/hsc/bin
do
    for n in `/usr/bin/find  $i -name "core*" -maxdepth 1 -type f`  
    do
      if [[ -f $n ]]; then
               zip -g /$ZIPDIR/HSClogs$datelabel.zip $n
      fi
    done 
done
 
echo ""
echo ""
#either copy HSClogs.zip to a DVD, or just leave it in /tmp dir 
echo Would you like to move zip file to a DVD?  Please type yes or no.
read answer
if [[ $answer = yes || $answer = y ]]
then
   umount /media/cdrom
   mount /media/cdrom
   cp /$ZIPDIR/HSClogs$datelabel.zip /media/cdrom
   if [ $? -eq 0 ]
   then
      echo HSClogs$datelabel.zip placed on DVD. 
      umount /media/cdrom
      rm /$ZIPDIR/HSClogs$datelabel.zip
   fi
else
  echo HSClogs$datelabel.zip created in /$ZIPDIR directory.
fi
  
